cs64 lecture2 binaryarithmeticlecture #2 ziad matni dept. of computer science, ucsb adding this...
TRANSCRIPT
![Page 1: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/1.jpg)
BinaryArithmetic
CS64:ComputerOrganizationandDesignLogicLecture#2
ZiadMatni
Dept.ofComputerScience,UCSB
![Page 2: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/2.jpg)
AddingthisClass
• Theclassisfull–IwillnotbeaddingmorepplL– Evenifothersdrop
4/5/18 Matni,CS64,Sp18 2
![Page 3: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/3.jpg)
LectureOutline
• Reviewofpositionalnotation,binarylogic• Bitwiseoperations• Bitshiftoperations• Two’scomplement• Additionandsubtractioninbinary• Multiplicationinbinary
4/5/18 Matni,CS64,Sp18 3
![Page 4: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/4.jpg)
PositionalNotationinDecimal
4/5/18 Matni,CS64,Sp18 4
Continuing with our example… 642 in base 10 positional notation is:
= 6 x 100 = 600
= 4 x 10 = 40 = 2 x 1 = 2 = 642 in base 10
6x102+4x101+2x100
6 4 2100 10 1
642(base10)=600+40+2
![Page 5: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/5.jpg)
Whatif“642”isexpressedinthebaseof13?
6 x 132 = 6 x 169 = 1014 + 4 x 131 = 4 x 13 = 52 + 2 x 13º = 2 x 1 = 2
PositionalNotationThisishowyouconvertanybasenumberintodecimal!
4/5/18 Matni,CS64,Sp18 5
6 4 2132 131 130
642(base13)=1014+52+2 =1068(base10)
![Page 6: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/6.jpg)
PositionalNotationinBinary
4/5/18 Matni,CS64,Sp18 6
11101 in base 2 positional notation is:
1 x 24 = 1 x 16 = 16 + 1 x 23 = 1 x 8 = 8 + 1 x 22 = 1 x 4 = 4 + 0 x 21 = 1 x 2 = 0 + 1 x 20 = 1 x 1 = 1
So, 11101 in base 2 is 16 + 8 + 4+ 0 + 1 = 29 in base 10
![Page 7: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/7.jpg)
ConvenientTable…HEXADECIMAL BINARY
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
4/5/18 Matni,CS64,Sp18 7
HEXADECIMAL(Decimal)
BINARY
A(10) 1010B(11) 1011C(12) 1100D(13) 1101E(14) 1110F(15) 1111
![Page 8: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/8.jpg)
AlwaysHelpfultoKnow…N 2N
1 22 43 84 165 326 647 1288 2569 51210 1024=1kilobits
4/5/18 Matni,CS64,Sp18 8
N 2N
11 2048=2kb12 4kb13 8kb14 16kb15 32kb16 64kb17 128kb18 256kb19 512kb20 1024kb=1megabits
N 2N
21 2Mb22 4Mb23 8Mb24 16Mb25 32Mb26 64Mb27 128Mb28 256Mb29 512Mb30 1Gb
![Page 9: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/9.jpg)
ConvertingBinarytoOctalandHexadecimal
(oranybasethat’sapowerof2)NOTETHEFOLLOWING:• Binaryis 1bit• Octalis 3bits• Hexadecimalis 4bits
• Usethe“groupthebits”technique– Alwaysstartfromtheleastsignificantdigit– Groupevery3bitstogetherforbinàoct– Groupevery4bitstogetherforbinàhex
4/5/18 Matni,CS64,Sp18 9
![Page 10: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/10.jpg)
ConvertingBinarytoOctalandHexadecimal
• Taketheexample:10100110…tooctal:10100110…tohexadecimal:10100110
4/5/18 Matni,CS64,Sp18 10
2 4 6
10 6
246inoctal
A6inhexadecimal
![Page 11: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/11.jpg)
While (the quotient is not zero) 1. Divide the decimal number by the new base 2. Make the remainder the next digit to the left in the answer 3. Replace the original decimal number with the quotient 4. Repeat until your quotient is zero
Algorithmforconvertingnumberinbase10tootherbases
ConvertingDecimaltoOtherBases
Example:Whatis98(base10)inbase8?
98/8=12R2
12/8=1R4
1/8=0R1
2414/5/18 Matni,CS64,Sp18 11
![Page 12: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/12.jpg)
In-ClassExercise:ConvertingDecimalintoBinary&HexConvert54(base10)intobinaryandhex:• 54/2=27R0• 27/2=13R1• 13/2=6R1• 6/2=3R0• 3/2=1R1• 1/2=0R1
54(decimal)=110110(binary)=36(hex)
4/5/18 Matni,CS64,Sp18 12
Sanitycheck:110110=2+4+16+32=54
![Page 13: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/13.jpg)
BinaryLogicRefresherNOT,AND,OR
X NOTXX
0 11 0
4/5/18 Matni,CS64,Sp18 13
X Y XORYX||YX+Y
0 0 00 1 11 0 11 1 1
X Y XANDYX&&YX.Y
0 0 00 1 01 0 01 1 1
![Page 14: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/14.jpg)
BinaryLogicRefresherExclusive-OR(XOR)
4/5/18 Matni,CS64,Sp18 14
X Y XXORYXOY
0 0 00 1 11 0 11 1 0
+
Theoutputis“1”onlyiftheinputsareopposite
![Page 15: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/15.jpg)
BitwiseNOT
• SimilartologicalNOT(!),exceptitworksonabit-by-bitmanner
• InC/C++,it’sdenotedbyatilde:~ ~(1001)=0110
4/5/18 Matni,CS64,Sp18 15
![Page 16: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/16.jpg)
Exercises
• Sometimeshexadecimalnumbersarewritteninthe0xhhnotation,soforexample: Thehex3Bwouldbewrittenas0x3B
• Whatis~(0x04)?– Ans:0xFB
• Whatis~(0xE7)?– Ans:0x18
4/5/18 Matni,CS64,Sp18 16
![Page 17: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/17.jpg)
BitwiseAND
• SimilartologicalAND(&&),exceptitworksonabit-by-bitmanner
• InC/C++,it’sdenotedbyasingleampersand:&(1001&0101)=1001 &0101
=0001
4/5/18 Matni,CS64,Sp18 17
![Page 18: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/18.jpg)
Exercises
• Whatis(0xFF)&(0x56)?– Ans:0x56
• Whatis(0x0F)&(0x56)?– Ans:0x06
• Whatis(0x11)&(0x56)?– Ans:0x10
• Notehow&canbeusedasa“masking”function
4/5/18 Matni,CS64,Sp18 18
![Page 19: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/19.jpg)
BitwiseOR
• SimilartologicalOR(||),exceptitworksonabit-by-bitmanner
• InC/C++,it’sdenotedbyasinglepipe:|(1001|0101)=1001 |0101
=1101
4/5/18 Matni,CS64,Sp18 19
![Page 20: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/20.jpg)
Exercises
• Whatis(0xFF)|(0x92)?– Ans:0xFF
• Whatis(0xAA)|(0x55)?– Ans:0xFF
• Whatis(0xA5)|(0x92)?– Ans:B7
4/5/18 Matni,CS64,Sp18 20
![Page 21: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/21.jpg)
BitwiseXOR
• Worksonabit-by-bitmanner
• InC/C++,it’sdenotedbyasinglecarat:^(1001^0101)=1001 ^0101
=1100
4/5/18 Matni,CS64,Sp18 21
![Page 22: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/22.jpg)
Exercises
• Whatis(0xA1)^(0x13)?– Ans:0xB2
• Whatis(0xFF)^(0x13)?– Ans:0xEC
• Notehow(1^b)isalways~bandhow(0^b)isalwaysb
4/5/18 Matni,CS64,Sp18 22
![Page 23: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/23.jpg)
BitShiftLeft
• MoveallthebitsNpositionstotheleft• Whatdoyoudothepositionsnowempty?
– YouputinN0s
• Example:Shift“1001”2positionstotheleft1001<<2=100100
• Whyisthisusefulasaformofmultiplication?
4/5/18 Matni,CS64,Sp18 23
![Page 24: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/24.jpg)
MultiplicationbyBitLeftShifting
• VeeeeryusefulinCPU(ALU)design– Why?
• Becauseyoudon’thavetodesignamultiplier• Youjusthavetodesignawayforthebitstoshift
4/5/18 Matni,CS64,Sp18 24
![Page 25: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/25.jpg)
BitShiftRight• MoveallthebitsNpositionstotheright,subbing-in
eitherN0sorN1sontheleft• Takesontwodifferentforms
• Example:Shift“1001”2positionstotheright1001>>2=either0010or1110
• Theinformationcarriedinthelast2bitsislost.• IfShiftLeftdoesmultiplication,
whatdoesShiftRightdo?– Itdivides,butittruncatestheresult
4/5/18 Matni,CS64,Sp18 25
![Page 26: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/26.jpg)
TwoFormsofShiftRight
• Subbing-in0smakessense• Whataboutsubbing-intheleftmostbitwith1?
• It’scalled“arithmetic”shiftright:1100(arithmetic)>>1=1110
• It’susedfortwos-complementpurposes
– What?
4/5/18 Matni,CS64,Sp18 26
![Page 27: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/27.jpg)
NegativeNumbersinBinary
• Soweknowthat,forexample,6(10)=110(2)• Butwhatabout–6(10)???
• Whatifweaddedonemorebitonthefarlefttodenote“negative”?– i.e.becomesthenewMSB
• So:110(+6)becomes1110(–6)• Butthisleavesalottobedesired
– Baddesignchoice…4/5/18 Matni,CS64,Sp18 27
![Page 28: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/28.jpg)
TwosComplementMethod
• ThisishowTwosComplementfixesthis.• Let’swriteout-6(10)in2s-Complementbinaryin4bits:
So,–6(10)=1010(2)
4/5/18 Matni,CS64,Sp18 28
011010011010
Firsttaketheunsigned(abs)value(i.e.6)andconverttobinary:
Thennegateit(i.e.doa“NOT”functiononit):Nowadd1:
![Page 29: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/29.jpg)
Let’sdoitBackwards…BydoingitTHESAMEEXACTWAY!
• 2s-ComplementtoDecimalmethodisthesame!
• Take1010fromourpreviousexample• Negateitanditbecomes0101• Nowadd1toit&itbecomes0110,whichis6(10)
4/5/18 Matni,CS64,Sp18 29
![Page 30: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/30.jpg)
AnotherViewof2sComplement
4/5/18 Matni,CS64,Sp18 30
NOTE:InTwo’sComplement,ifthenumber’sMSBis“1”,thenthatmeansit’sanegativenumberandifit’s“0”thenthenumberispositive.
![Page 31: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/31.jpg)
AnotherViewof2sComplement
4/5/18 Matni,CS64,Sp18 31
NOTE:Oppositenumbersshowupassymmetricallyoppositeeachotherinthecircle.
NOTEAGAIN:Whenwetalkof2scomplement,wemustalsomentionthenumberofbitsinvolved
![Page 32: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/32.jpg)
Ranges
• Therangerepresentedbynumberofbitsdiffersbetweenpositiveandnegativebinarynumbers
• GivenNbits,therangerepresentedis:0to
and
4/5/18 Matni,CS64,Sp18 32
+2N–1forpositivenumbers–2N-1to+2N-1–1for2’sComplementnegativenumbers
![Page 33: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/33.jpg)
Addition• Wehaveanelementarynotionofaddingsingledigits,along
withanideaofcarryingdigits– Example:whenadding3to9,weputforward2andcarrythe1
(i.e.tomean12)
• Wecanbuildonthisnotiontoaddnumberstogetherthataremorethanonedigitlong
• Example: 123 + 389
4/5/18 Matni,CS64,Sp18 33
11
215
![Page 34: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/34.jpg)
AdditioninBinary
• Samemathematicalprincipalapplies
0011+1101
4/5/18 Matni,CS64,Sp18 34
1
00
11
00
3+13
161
1
![Page 35: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/35.jpg)
Exercises
Implementingan8-bitadder:• Whatis(0x52)+(0x4B)?
– Ans:0x9D,outputcarrybit=0
• Whatis(0xCA)+(0x67)?– Ans:0x31,outputcarrybit=1
4/5/18 Matni,CS64,Sp18 35
![Page 36: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/36.jpg)
YOURTO-DOs
• Assignment#1– Lookforitovertheweekendontheclasswebsite– LAB#1isonMONDAY!
• Nextweek,wewilldiscussmoreArithmetictopicsandstartexploringAssemblyLanguage– Doyourreadings!
(again:foundontheclasswebsite)
4/5/18 Matni,CS64,Sp18 36
![Page 37: CS64 Lecture2 BinaryArithmeticLecture #2 Ziad Matni Dept. of Computer Science, UCSB Adding this Class • The class is full – I will not be adding more ppl L ... • In C/C++, it’s](https://reader035.vdocument.in/reader035/viewer/2022070109/6044ebfaabc02a5d9a1ffa30/html5/thumbnails/37.jpg)
4/5/18 Matni,CS64,Sp18 37