HOW COMPUTERS CAST STRINGS TO NUMBERS

  Рет қаралды 31,111

Core Dumped

Core Dumped

Күн бұрын

This video was sponsored by Flexispot.
💥FlexiSpot Amazon Prime Day Deal Up to 60% OFF💥
10 100% Free orders on July 16th & July 17th🎁
US site: amzn.to/3XBuaxV
Upgrade your workspace with OC6 Ergonomic Chair:amzn.to/3XLNwAq
In this episode we learn the whole process of casting a decimal number formated as a string to a number that the computer can use to perform calculations.
Questions and business contact:
contact.coredumped@gmail.com
Join our discord server:
/ discord
Follow me on twitter:
twittter.com/coredumpped
Twitch:
/ coredumpped
Follow me on Github:
github.com/jdvillal

Пікірлер: 177
@jannegrey593
@jannegrey593 24 күн бұрын
Funnily at 10:10 there might be a mistake - because the number "1 0000 111 0000" after adding "00000 111" lengthens to "1 0000 111 00 111", so it "feels" like there is additional 0 between 2 triples of "1". And it doesn't feel like we needed to expand due to number being too big (256,512 - we are in between). But I didn't have the time to check it.
@CoreDumpped
@CoreDumpped 24 күн бұрын
Yeah, somehow that 0 got in between. I didn't noticed this while editing so thanks. I'll pin this comment.
@CoreDumpped
@CoreDumpped 24 күн бұрын
Somebody else also noticed that the condition in the C version of the algorithm is wrong. `str[i] < '0' && str[i] > '9'` will always return false, since it's checking if str[i] < 48 and str[i] > 57, which is never true. The condition should be `str[i] < '0' || str[i] > '9'` My apologies for these mistakes.
@zionmelson7936
@zionmelson7936 24 күн бұрын
your byte format sucks bruv 😐
@jannegrey593
@jannegrey593 24 күн бұрын
@@zionmelson7936 I was formatting 1 and 0 separately, so one could see there was additional number there. I didn't go for actual formatting like it should be.
@twqzjsidIsndusiakdixisqjeksixi
@twqzjsidIsndusiakdixisqjeksixi 24 күн бұрын
@@CoreDumpped No worries, Core. Programming is hard.
@paulosouza449
@paulosouza449 24 күн бұрын
This channel is criminally underrrated. This is top tier content for free
@idehenebenezer
@idehenebenezer 16 күн бұрын
To everyone in this chat, Jesus is calling you today. Come to him, repent from your sins, bear his cross and live the victorious life
@CritickalTvRandom
@CritickalTvRandom 13 күн бұрын
Toda la maldita razón del mundo, amigo
@dkub3522
@dkub3522 24 күн бұрын
"And on this channel, we hate black boxes." *subscribed*
@xOWSLA
@xOWSLA 24 күн бұрын
It's funny that right now at my job, I am dealing with serializing ASCII characters and you are making this video. I'm really glad I'm here George. Nicely done.
@GoldbergToastyBred
@GoldbergToastyBred 24 күн бұрын
im learning c and tried to do i kind of failed and after that he makes that video
@vladsiaev12
@vladsiaev12 24 күн бұрын
how did you send a comment 6 hours before the video uploaded?
@PennyEvolus
@PennyEvolus 23 күн бұрын
​@@vladsiaev12they pay for early access
@rebecasally
@rebecasally 15 күн бұрын
​@@vladsiaev12 probably a member of the channel
@ava3a13
@ava3a13 24 күн бұрын
While on the topic, I know it's a bit early for the channel to explain it now, but whenever you get to architectures, please don't forget endianness explanation, there are always explanations of how but not of why. Great video as always!!
@CoreDumpped
@CoreDumpped 24 күн бұрын
Yeah, there is a video about endianness already on the list.
@marcuswilliams3455
@marcuswilliams3455 24 күн бұрын
Ah, that Little Endian vs Big Endian discussion. ;)
@jack4x3
@jack4x3 22 күн бұрын
There is simply no why, computing machines should exist in one of the ways. Either one is a choice
@thibaut5345
@thibaut5345 21 күн бұрын
This is not casting, this is converting. Casting is a grammatical operation (forcing the compiler to think that a data has a certain type, but not actually doing any conversation).
@oglothenerd
@oglothenerd 23 күн бұрын
A video on how computers represent negative and floating numbers. That would be amazing!
@idehenebenezer
@idehenebenezer 16 күн бұрын
Jesus is the only way to salvation and to the father. Please repent today and turn away from your sins yo escape judgement 🙏🙏 There is no other way to get to the father but through him.
@oglothenerd
@oglothenerd 13 күн бұрын
@@idehenebenezer I cannot tell if this is a funny way of saying that my idea is insane, or if this is genuinely an ad for Christianity.
@verysadboyo7424
@verysadboyo7424 24 күн бұрын
I can sleep in peace now, I had exactly this question today and yes chair I was looking for double w.
@anonymous0x0
@anonymous0x0 23 күн бұрын
This channel is pure gold.
@patrick8613
@patrick8613 22 күн бұрын
I talked to my colleagues about this exact problem, specifically the one you mentioned in the end, great video!
@adityavs18
@adityavs18 24 күн бұрын
Amazing. I’m literally addicted to learning like this through your videos. They’re awesome ! I can’t wait for the next one and yes I would love a video on conversion of the binary values back do string to understand how the print function works !
@smallcube-zn2mm
@smallcube-zn2mm 22 күн бұрын
Another way to do: 1. Take the string as argument 2. Access every character 3. Use fixed values with switch cases for every character till '0' to '9' like switch(str[i]) case '1' : 001 4. Do bit shifting to create a BCD value containing all characters 5. Convert BCD to binary 6. return binary It may or may not be faster
@trapfethen
@trapfethen 20 күн бұрын
Once you get into SIMD instruction extensions, then a plethora of performance optimizations become available to you.
@AntonioZL
@AntonioZL 24 күн бұрын
Not the topic I expected after the last videos, but still a very welcome one.
@cornevanzyl5880
@cornevanzyl5880 17 күн бұрын
This is so well explained, I don't think I'll ever be able to forget this.
@kunalchakraborty9735
@kunalchakraborty9735 24 күн бұрын
Revolutionary idea of getting the actual number
@Pwnification
@Pwnification 23 күн бұрын
This channel is perfect to watch alongside taking CS50 to start my programming journey. Pretty excited about understanding everything in this video and learning more. Thanks for the quality videos.
@TheFacal
@TheFacal 24 күн бұрын
Thank you so much, this was a question I had from some time ago. I would love to see the continuation of this video :)
@shmuel6
@shmuel6 21 күн бұрын
You my friend have done the impossible. You have actually made programming make sense.
@Jack-do3sy
@Jack-do3sy 24 күн бұрын
Man I love this channel so much, this would've been so helpful back when I was learning to do this kinda stuff lol
@dj.yacine
@dj.yacine 24 күн бұрын
Always high quality content 😊
@swordoman2158
@swordoman2158 20 күн бұрын
When it gets to converting decimal fractions as strings to floats things get a lot more complicated. Looking forward to seeing a new video about this case in the future!
@user-nk7tb6qg3v
@user-nk7tb6qg3v 23 күн бұрын
I love channels that demystify these things tks
@jannegrey593
@jannegrey593 24 күн бұрын
Another video! I'm glad I checked your channel, since there was no notification. Typical of KZfaq sadly. Though it probably has to do with delay between the last part and this video. KZfaq deprioritizes notifications if you normally have 1 week cadence and then suddenly release video month later. Honestly being a KZfaqr is a ton of work.
@Andremzsptm
@Andremzsptm 24 күн бұрын
Great content as always!
@aldomaresca9994
@aldomaresca9994 24 күн бұрын
dude, youre going to the moon, and i'm liking your videos all the way there
@ruhollahh01
@ruhollahh01 24 күн бұрын
great job thank you i would love an explanation about formatting numbers into strings as well!
@morzatt
@morzatt 15 күн бұрын
Great video! I would really like to see a video explaining the problem with null values inside languages and how to avoid them, that would be very educative!
@brielov
@brielov 24 күн бұрын
This is the way. Would love to see a performant way to do the same with floating points numbers. This kind of video is what I really like to watch.
@cyrilemeka6987
@cyrilemeka6987 21 күн бұрын
Using IEEE-754 binary floating point 32 or 64 format, you would have to manually decode the floating point. First bitcast the floating point to an unsigned integer of the same size, I.e float -> ui32 or double -> ui64, then using the encoding specification you extract the sign, exponent and mantissa from the integer.
@yuseidrex
@yuseidrex 24 күн бұрын
this channel is really good!
@utilizadorable
@utilizadorable 23 күн бұрын
Great video, as always. Got me curious to understand how the process works with negative numbers.
@HkRines
@HkRines 19 күн бұрын
0:07 Yes... Just yes. Maybe this will be SUPER slow but yes) I have this in mind: 1. Represent each character in string with 4-bit binary number (Using Unicode) 2. Make BCD number from all characters 3. Convert BCD to binary. Now you have a number. For example: "532" 1. || "5" = 0101 || 3 = 0011 || 2 = 0010 || 2. 0101 0011 0010 (BCD to Binary algorithm) 3. "532" = 1000010100 __________ Now I'll watch video) ---------------------------------- Ps. Subtracting 48 is a very cleaver solution!! Now we can do same thing as i did. But initially i just wanted use table to store Unicode and number like this: | Unicode Number | Number in Binary | And use this table to convert each symbol to a number but yeah we can just subtract '0' encoding to get a number!
@waynehawkins654
@waynehawkins654 23 күн бұрын
Nice, I will show my class this. Well explained.
@MOOBBreezy
@MOOBBreezy 24 күн бұрын
Banger video once again!
@NinosYoukhana
@NinosYoukhana 23 күн бұрын
Amazing! Thank you very much for doing this!
@oscarmendez9079
@oscarmendez9079 24 күн бұрын
Thanks again for this amazing content
@pepemanolo69
@pepemanolo69 22 күн бұрын
Subscribed, wanna see the second part
@StevenHokins
@StevenHokins 24 күн бұрын
Nicely done, thank you ❤
@Nick-ex4tk
@Nick-ex4tk 21 күн бұрын
My man your videos are awesome. Can you do an explanation on how the clock is used to move the process forward from the transistor level? For example, how do transistor gates use the clock to take the next instruction into the instruction register at the right time?
@helmytaufik6735
@helmytaufik6735 22 күн бұрын
Arigatouu keep em coming 🔥🔥🔥
@eliasepg
@eliasepg 24 күн бұрын
It reminds me about the college times! I really like this stuff, thank you!
@kossboss
@kossboss 8 күн бұрын
Person reveal. Your a young lad. One of those prodigies I keep hearing about.
@User-ty2ml
@User-ty2ml 22 күн бұрын
Beautiful!!!! Thanks
@RaphaelOkai
@RaphaelOkai 9 күн бұрын
This is just soo beautiful. 😍
@valcubeto
@valcubeto 24 күн бұрын
Underrated channel
@mrdj6450
@mrdj6450 22 күн бұрын
From now i respect my computer, doing this all process within micro seconds... Thanks for the best video...
@abhilasha4334
@abhilasha4334 23 күн бұрын
Yes we need that too and don't forget to upload the remaining part of cpu episode
@danielrhouck
@danielrhouck 22 күн бұрын
I would like a future video about converting an int to a string, but I am more interested in the much more complicated process of converting a float to a string.
@mohsenzare2511
@mohsenzare2511 18 күн бұрын
Thanks for your video
@lordkauck
@lordkauck 22 күн бұрын
literally Str(number) - 0x30 for 0-9, Str(uppercase letter) - 0x41 for A-Z, Str(lowercase)-0x61 for a-z Converting between the two is as simple as char(lower) = char(upper) ^ 0x20
@TWPO
@TWPO 20 күн бұрын
Simply awesome
@Zensi123
@Zensi123 20 күн бұрын
Hi, thanks for this video. What tools do you use for your animations? They are amazing.
@ameertheprogrammer922
@ameertheprogrammer922 24 күн бұрын
keeep this up! good vedio ❤ g
@Mr.taxevador
@Mr.taxevador 24 күн бұрын
Amazing video
@knkootbaoat6759
@knkootbaoat6759 24 күн бұрын
please do explain the process from getting from an integer to "string"/output. Keep up the great work!
@lucassantato6585
@lucassantato6585 24 күн бұрын
sum 48 to it and convert to char
@merveilleskatumba2886
@merveilleskatumba2886 13 сағат бұрын
The way I agree This channel is very underrated
@muhammadjibonmia
@muhammadjibonmia 24 күн бұрын
Thanks a lot❤❤
@timschulz9563
@timschulz9563 23 күн бұрын
ASCII allows for the use of a bitmask to get the number itself. The probably preferred way to convert these BCD numbers to an integer is reverse double dabble. There's a wiki article about it. This algorithm gets rid of expensive and area intensive (depending on your architecture, first for CPU, second for FPGA/custom silicon) multiplications and relies on fast/small shifts and add/sub operations.
@thaivo666
@thaivo666 16 күн бұрын
Can you make a video about how to virtual memory works in OS? Thanks a lot. All of your videos are so useful.
@1kvolt1978
@1kvolt1978 24 күн бұрын
Well, actually, there is a limit for integer numbers (as well as float), at least in C. And there is also negative numbers. So the more proper function is a little bit more complex. I wrote mine like this: int64_t StrToNum(char *Str) { int64_t Result = 0; uint32_t Index = 0; bool IsNegative = false; if (Str[0] == '-') { IsNegative = true; Index = 1; } while ((Str[Index] != '\0') && (Str[Index] >= '0') && (Str[Index]
@luislanga
@luislanga 24 күн бұрын
Thank God I never thought about this before I saw the title of this video
@JuanDiegoPatinoMunoz-gc6kq
@JuanDiegoPatinoMunoz-gc6kq 24 күн бұрын
I love your channel
@marcuswilliams3455
@marcuswilliams3455 24 күн бұрын
Great, that's a perfect illustration of what happens internally with the atoi() function. Ah, I noticed there is minor difference between converting a numeric string to a binary integer vs converting a numeric string to a BCD number. And that is multiplying by 10 vs shifting by 4 bits (since BCD numbers represents each numeric digit every 4 bits). I find it rather interesting, with the IBM mainframe, existing a single machine instruction (CVD) which can convert a numeric string (up to 31 digits) to BCD number. Likewise, there's another instruction (CVB) which can convert these BCD number into integers.
@flv-hd7nn
@flv-hd7nn 24 күн бұрын
please continue>
@electrolyteorb
@electrolyteorb 23 күн бұрын
your AI voice is fine. dont change it... GOLD content as always!
@liburnkrasniqi4003
@liburnkrasniqi4003 24 күн бұрын
Dude u R goated
@MickeyToler-ye9ds
@MickeyToler-ye9ds 24 күн бұрын
I would like you to explain and give an example of the end process that you asked about.
@AbhijitGangoly
@AbhijitGangoly 24 күн бұрын
Please make a video about the reverse function, Binary to Numerical String.
@laoluade5741
@laoluade5741 2 күн бұрын
I would love to see an explanation for thr reverse!
@CybernetonPL
@CybernetonPL 23 күн бұрын
11:55 spoiler, it's the double dabble. Look for Sebastian lagues visualizing data with displays video
@user-mg5ut7fh9z
@user-mg5ut7fh9z 23 күн бұрын
Please please do a video explaining operating system
@blackhorse8422
@blackhorse8422 23 күн бұрын
Please make a video about big and little endianness, I always forget the order and don't understand the order of bits itself in comparison to the byte order.
@MikhailGoncharov-tl4cr
@MikhailGoncharov-tl4cr 24 күн бұрын
You are the best
@somerhaha1687
@somerhaha1687 18 күн бұрын
I had to learn this when making my own programming language and i wish i had found this video sooner .-.
@bobsprite6711
@bobsprite6711 24 күн бұрын
Great!
@dj10schannel
@dj10schannel 24 күн бұрын
Nice 👍
@olhoTron
@olhoTron 24 күн бұрын
I work on a php application where someone in the past reimplemented the string to number conversion... And if you have questions... Yes, it involved a loop with a bunch of ifs to check each digit Yes, they messed it up Yes, changing the usages of the function to "(int)$value" fixed a lot of bugs Yes, the person who did it (acording to git blame) still works there but was promoted to manager No, we dont do code reviews or anything like that
@Milan____
@Milan____ 23 күн бұрын
"Shipping to Alaska, Hawaii, Puerto Rico, and International addresses is currently not available." -> pity I was actually looking for a new chair Anyway, good video, it's nice to see easier topics now and then.
@vishnu.k4737
@vishnu.k4737 24 күн бұрын
Can we able yo make software buffer in c programming?? Because Binary values are stored in buffer of hardware internal register right?
@diadetediotedio6918
@diadetediotedio6918 24 күн бұрын
Before watching the response, this was the algorithm I came up with: ``` base = 10 str = "1030" println(string_to_int(str, base)) fn string_to_int(str: string, base: int) { let number = 0 each (index, char) of str { let digit = lookup_from(char) let exp = base ** len(str) - index - 1 number += digit * exp } return number } ```
@talwald1680
@talwald1680 24 күн бұрын
Great video, and it is a very introductory version of the algorithm. However, this is not an efficient algorithm. The reason is due to the fact that the alu can't parallelize the multiplications and the additions. You should see Andrei Alexandrescu's lecture on this! But this can be a cool continuation of this video.
@CoreDumpped
@CoreDumpped 24 күн бұрын
Thanks for the advice, I'll take a look at the lecture as soon as I get some free time. I'm assuming it is related to SIMD but if not I'm sure I'll enjoy it anyways.
@thunder____
@thunder____ 24 күн бұрын
The conditionals you add at 11:06 are incorrect, the C code should have || instead of &&, and the Python code should have a ‘or’ and check both ends the same way the C code does; the way you wrote the C condition can never possibly trigger to raise the error you intend, because a character can't possibly be below 0 and above 9 at the same time, and the Python condition will behave completely differently than the way you intend, because first the “‘0’ < char” will evaluate to a boolean, and thus will never trigger the “char > ‘9’” because, just like in C, booleans are either 0 or 1. And even if the Python code behaved the way you intended, it's still missing a ‘not’, so it would trigger when the char IS numeric, not when it's NOT. I believe it's also a better idea to return null in C in this case, because -1 is a valid integer and is thus much more difficult to detect as an error value. Overall, still a great video! You explain the computer science concept very well, which is ultimately the value this video provides, and I'm perfectly happy to overlook erroneous code examples because this is not a programming tutorial. I've learned an incredible amount about computer science from your videos already, and this video has been no exception.
@CoreDumpped
@CoreDumpped 24 күн бұрын
Yeah, I already pinned a comment referring to this. My apologies, thanks for the feedback.
@jbond5834
@jbond5834 23 күн бұрын
the sequential method in the video also solve the issue ,when the input string is like '0987''
@lejrimizou4798
@lejrimizou4798 23 күн бұрын
Love that sneaky "subscribe"❤.
@user-ng3ps6vd6u
@user-ng3ps6vd6u 17 күн бұрын
How to convert a number to a string: The key instrument is integer division. Let's consider the number 4327. Dividing by 10 we obtain 432 and remainder 7. Now, we already know how to convert a single digit to its corresponding ASCII code: just add 48 or ord('0'). So in this one step we obtained the so called least significant digit (7) and are left with 432. Now, we just have to repeat the same procedure until we are left with no more digits (when the last division yields 0 as the quotient). PS: Integer division is just a single processor instruction and actually gives both the quotient and the remainder in one go so it's pretty fast.
@JEMSS97
@JEMSS97 24 күн бұрын
can you do kernel vs os
@hybrid7042
@hybrid7042 24 күн бұрын
You are going to tell us about loop ,if what about that
@CritickalTvRandom
@CritickalTvRandom 13 күн бұрын
¿Con que libros o páginas aprendes estas cosas?
@noritesc5000
@noritesc5000 19 күн бұрын
done the string to float double and it myself but a different approach stuff skiped in this video - Sign of a value for applaing a Sign multyplay output value by -1 if the '-' is found at the start of a string - decimal parsing the same way as string to int but - do it 2 times and when . was found instead of multiplying value just divide decimal it by 10 for each Ituretion and cheak if value is not to large
@tech_simpleterms
@tech_simpleterms 21 күн бұрын
Kindly provide clue at the end of the video when will be the next video released?
@marcopinedo2368
@marcopinedo2368 24 күн бұрын
I'm guessing that in order to convert an integer to a string you have to make reverse process. Instead of multiplying you have to divide the number, take the reminder and add '0'
@artiartem
@artiartem 24 күн бұрын
Can you convert number to string? Or big number? Or float?
@tech1706
@tech1706 16 күн бұрын
How does it deal with points in floats
@atzefatze
@atzefatze 20 күн бұрын
11:50 ...yes please! :)
@JordHaj
@JordHaj 24 күн бұрын
Great explanation as always. I have a little question about 11:07. Are the conditions supposed to be like that? In the C example `str[i] < '0' && str[i] > '9'` will always return false, since it's checking if str[i] < 48 and str[i] > 57, which is never true. Maybe `str[i] >= '0' && str[i] '9'` will return true on chars that are NOT numeric chars, since it's checking if char > 48 and char > 57, equivalent to `char > 57`, equivalent to `char > '9'`. I suggest `'0'
@CoreDumpped
@CoreDumpped 24 күн бұрын
Yes, mi bad. The condition should be || (or) instead of && (and).
@JordHaj
@JordHaj 24 күн бұрын
@@CoreDumpped Oh I just realised I wrote the suggestions for checking for numerical chars, not the opposite. So in C it would be like you wrote in the reply, `str[i] < '0' || str[i] > '9'` and in Python basically the same, `char < '0' or char > '9'`. Or you could be fancy and use De Morgan's laws, `not('0'
@mahmoudtawfiq6219
@mahmoudtawfiq6219 23 күн бұрын
at 11:08 shouldn't we use || instead of && ?
@user-zw6vz4ec7n
@user-zw6vz4ec7n 2 күн бұрын
Yes. The same mistake is in the python code on the bottom.
@AkivaB
@AkivaB 20 күн бұрын
Doesn't subtracting 48 just convert it to BCD where you can use reverse double dabble or am i tripping?
@gustavoshigueo
@gustavoshigueo 23 күн бұрын
11:10 the C if statement should be an OR instead of AND. The Python check is also wrong as chaining comparisons cannot be used to check if a number is OUTSIDE a range, only inside It should be if not '0'
@CoreDumpped
@CoreDumpped 23 күн бұрын
Hi, thanks for paying attention to details like this. I already pinned a comment mentioning this. And I apology for the mistakes.
@sharjeel_mazhar
@sharjeel_mazhar 24 күн бұрын
Yes please, make those 2 videos that you talked about in the video! Great job!! And may i give you a suggestion? Why don't you also make videos on DSA? Your animations are great! That way everyone will be able to understand completely and one more thing, can you please make the next video on recursion?
@CoreDumpped
@CoreDumpped 24 күн бұрын
If you mean Data Structures, I already posted a video about ArrayLists. More videos of that kind are already on my list.
@sharjeel_mazhar
@sharjeel_mazhar 23 күн бұрын
@@CoreDumpped yeah yeah, i mean like binary trees and heaps, those advanced topic that are rare on KZfaq
@akshaylahoti6546
@akshaylahoti6546 21 күн бұрын
What if the number is above MAX_INT? Hkw is that case handled.
@YallDotBiz
@YallDotBiz 21 күн бұрын
What about and'ing?
What is the Smallest Possible .EXE?
17:57
Inkbox
Рет қаралды 335 М.
ARRAYLIST VS LINKEDLIST
21:20
Core Dumped
Рет қаралды 55 М.
Doing This Instead Of Studying.. 😳
00:12
Jojo Sim
Рет қаралды 14 МЛН
Faster than Rust and C++: the PERFECT hash table
33:52
strager
Рет қаралды 531 М.
One second to compute the largest Fibonacci number I can
25:55
Sheafification of G
Рет қаралды 208 М.
The moment we stopped understanding AI [AlexNet]
17:38
Welch Labs
Рет қаралды 844 М.
10 FORBIDDEN Sorting Algorithms
9:41
Ardens
Рет қаралды 830 М.
Naming Things in Code
7:25
CodeAesthetic
Рет қаралды 2 МЛН
WHY IS THE HEAP SO SLOW?
17:53
Core Dumped
Рет қаралды 213 М.
Why Didn't He Get the Job? Let's Find Out! // Code Review
27:25
The Cherno
Рет қаралды 93 М.
Understanding B-Trees: The Data Structure Behind Modern Databases
12:39
HOW TRANSISTORS RUN CODE?
14:28
Core Dumped
Рет қаралды 343 М.
КРУТОЙ ТЕЛЕФОН
0:16
KINO KAIF
Рет қаралды 6 МЛН