One, the binary 1. What is a binary

L is a way of counting, a representation of a number

Count the number of squares

Kanji: 20 binary: 112 binary: 10,118 in: 13

L Multiple binary: decimal, binary, octal, hex. In other words, we have at least 4 representations of the same integer

L software development, definitely want to understand this 2. Binary

1> features: only 0 and 1, every 2 into 1

2> writing format: 0b or 0b start

3> application: Binary instruction \ Binary, variable in memory is binary storage

4> Binary and Decimal conversions

5> N is the range of data that bits can represent (regardless of negative numbers): 0~2 N-1 3. Octal

1> Features: 0~7, every eight into a

2> writing format: 0 opening

3> octal and binary conversions to each other 4. Hexadecimal

1> Features: 0~f, every 16 into a

2> writing format: 0x or 0X start

3> 16 binary and binary conversion to each other 5. Summarize

1> use of calculators in Mac

2> printf output in a different binary form

6. Exercises

1> judge if the following figures are reasonable

00011 0x0011 0x7h4 10.98 0986.089-109

+178 0b325 0b0010 0xFFdc 96f 96.0f 96.0F

-.003 15.4e6 10e8.7 7.6e-6

2> write their decimal, octal, hexadecimal, respectively

0b0011 1101 0b0111 1011

3> write their binary

056 0x004f Memory Analysis of variables

Study the specific storage situation of variables in memory 1. Bytes and Addresses

To better understand the storage details of variables in memory, first recognize the "bytes" and "addresses" in memory.

1> memory in "bytes"

2> the bytes occupied by different types are not the same as 2. Storage of variables

The number of bytes consumed by 1> is related to the type, and also to the compiler environment

2> Variable Instance

int B = 10;

int a = 134;

L Memory from large to small addressing

L Only store binary form

L Each variable has an address: the address of the first byte is the address of the variable.

3> two ways to view memory addresses:%x and%p

4> viewing the binary form of integers

Binary form of the output integer

void putbinary (int n)

{

int bits = sizeof (n) * 8;

while (bits-->0) {

printf ("%d", n>>bits&1);

if (bits%4==0) printf ("");

}

printf ("\ n");

} 3. Negative numbers are stored in memory

1> the value range of a single byte

2> representation of negative numbers

3> original code, anti-code, complement 4. Range of values

5. Exercises

Write the following variables in memory storage

int a = 134;

int b = 0;

int c =-10; Three, type specifier 1. Short and long

L 100l and 100LL and 100 difference

L Long and long Long's output

L storage space occupied by different types

1> Short and long can provide integer numbers of different lengths, that is, the range of values that can be changed for integer numbers. In the 64bit compiler environment, int occupies 4 bytes (32bit), the value range is -231~231-1;short occupies 2 bytes (16bit), the value range is -215~215-1;long occupies 8 bytes (64bit), the value range is -263~ 263-1

2> summarizes: In a 64-bit compiler environment, short accounts for 2 bytes (16 bits), int accounts for 4 bytes (32 bits), and Long is 8 bytes (64 bits). Therefore, if you use an integer that is not very large, you can use short instead of int, which saves memory overhead.

3> in the world of compilers, different compiler environment, int, short, long, the range of values and occupy the length is not the same. For example, in a 16bit compiler environment, a long takes only 4 bytes. Fortunately, ANSI \ ISO has the following rules in place:

l Short and int are at least 16 bits (2 bytes)

L Long is at least 32 bits (4 bytes)

L short length cannot be greater than int,int length cannot be greater than long

L char must be 8 bits (1 bytes), after all char is the smallest data type we can program

4> can use 2 consecutive long, that is, a long long. In general, the range of long long is not less than long, for example, in a 32bit compiler environment, a long long takes up 8 bytes, and a long occupies 4 bytes. However, in the 64bit compiler environment, a long long is the same as long, which occupies 8 bytes.

5> another point to make clear is that the short int is equivalent to the Short,long int equivalent to the long,long long int equivalent to a long long 2. Signed and unsigned

1> first to be clear: Signed int is equivalent to signed,unsigned int equivalent to unsigned

The difference between 2> signed and unsigned is whether their highest bit is to be used as a sign bit, and does not change the length of the data, that is, the number of bytes, as short and long do.

L Signed: Indicates a symbol, which means that the highest bit is used as the sign bit, so it includes positive, negative, and 0. In fact, the highest bit of int is the sign bit, already includes the positive and negative number and 0, so signed and int are the same, signed equivalent to signed int, also equivalent to int. The value range of signed is 231 ~ 231-1

L unsigned: denotes unsigned, that is, the highest bit is not used as the symbol bit, so it does not include negative numbers. Under the 64bit compiler environment, int occupies 4 bytes (32bit), so the value range of unsigned is: 0000 0000 0000 0000 0000 0000 0000 0000 ~ 1111 1111 1111 1111 1111 1111 11 11 1111, that is, 0 ~ 232-1 Four, bit operation 1. & Bitwise AND

1> function

Only the corresponding two binaries are 1 o'clock, the result bit is 1, otherwise 0.

2> Example: 9&5, in fact, is 1001&101=1, so 9&5=1

3> Law

L binary, with 1 phase & to remain in place, and 0 phase & is 0 2. | Bitwise OR

1> function

As long as the corresponding two binary has one for 1 o'clock, the result bit is 1, otherwise 0.

2> Example: 9|5, in fact, is 1001|101=1101, so 9|5=13 3. ^ Bitwise XOR OR

1> function

When the corresponding binary is different (not the same), the result is 1, otherwise 0.

2> Example: 9^5, in fact, is 1001^101=1100, so 9^5=12

3> Law

L The result of the same integer ^ is 0. Like 5^5=0.

l multiple integers ^ results are independent of order. Like 5^6^7=5^7^6.

L therefore concluded that A^b^a = B 4. ~ Take counter

The binary of integer A is reversed, and the sign bit is reversed (0 to 0) 5. << left Shift

L Shift all the binary of integer A to the left n bit, high discard, low 0. The n-bit left shift is actually multiplied by 2 of the n-th square

L Because the left shift is the highest bit discarded, 0 is the lowest bit, so the sign bit will also be discarded, the result value left out may change the positive and negative 6. >> Right Shift

L Shift all the binary in integer A to the right n bits, keeping the sign bit constant. The right shift n is actually divided by 2 of the n-th square

When L is positive, the sign bit is 0 and the highest bit is 0

When L is negative, the sign bit is 1, the highest bit is 0 or 1 depends on the requirements of the compiling System 7. Exercises

1> using the bitwise XOR operator to interchange the values of two variables without introducing other variables

2> parity between bits and & operator variables

3> writes a function to output integers in memory in binary form five, char type 1. Storage Details

ASCII single-byte table (double-byte gbk\gb2312\gb18030\unicode) 2. Common errors

char C = A;

char c = "A";

char c = ' ABCD ';

char c = ' male '; 3. Use as Integral type

Within the -128~127 range, you can use 4 as an integer. Use of%c and%d\%i

printf ("%d", ' A ');

printf ("%c", 68); 5. Escape character

Escape character

Significance

ASCII code value

\ n

Moves the current position to the beginning of the next line (carriage return line)

10

\ t

Jumps to the next tab position

9

\\

Represents a backslash character

92

\‘

Represents a single quote character

39

\"

Represents a double-quote character

34

/

Null character

0 6. Exercises

1. Write a function to capitalize the lowercase letters

2. Say the output of the program

int main ()

{

int i = 67 + ' 4 ';

char c = ' C '-10;

printf ("%d-%c\n", I, I);

printf ("%d-%c\n", C, c);

return 0;

}

09-c language input, memory analysis